Ch 9.htm

назад | содержание | вперед

Запись в файл произвольного доступа

Для записи данных в файл произвольного доступа используется оператор Put #, имеющий следующий синтаксис:

Put #fileNumber, [recNumber], varName

где:

- fileNumber — номер файла, аналогичный номеру в операторе open;
- recNumber — целочисленное выражение, которое задает номер записи в файле;
- varName — переменная, указывающая источник записываемых данных.

Этот оператор используется только для файлов произвольного доступа и бинарных. Если номер записи не указан, то по умолчанию принимается текущая позиция указателя записи.

> Замечание

> При использовании оператора Put необходимо иметь в виду, что данные в записи с указанным в операторе номером будут заменены на те, которые мы записываем в файл. Добавление записей выполняется при помощи этого же оператора, но с некоторыми особенностями. Об этом речь пойдет в следующем разделе.

Рассмотрим небольшой пример. Воспользуемся приложением MyFileApp, изменив его следующим образом:

1. Измените наименование кнопки Выполнить на Запись.

2. Добавьте в форму еще одну кнопку управления.

3. Присвойте созданной кнопке наименование cbRead, используя свойство Name.

4. В свойство Caption введите значение Чтение.

5. Добавьте в приложение программный модуль, воспользовавшись командой Add Module (Добавить модуль) из меню Project (Проект).

6. В код модуля введите текст описания пользовательского типа данных:

Type Phis Face

PhisFaseID As Integer

FIO As String * 50

End Type

7. Откройте окно редактора кода и замените находящийся там код на следующий:

Dim ForFileRecords As PhisFace

Dim nRecNo As Integer

Private Sub SaveRecord ()

Open "C:\FilePF.dat" For Random As #1 Len = Len(ForFileRecords)

ForFileRecords.PhisFaseID = txtNumber.Text

ForFileRecords.FIO = txtFile.Text

Put #1, nRecNo, ForFileRecords

nRecNo = nRecNo + 1

Close #1

End Sub

Private Sub ReadRecord ()

Open "C:\FilePF.dat" For Random As #1 Len = Len(ForFileRecords)

Get #1, nRecNo, ForFileRecords

txtNumber.Text = ForFileRecords.PhisFaseID

txtFile.Text = ForFileRecords.FIO

nRecNo = nRecNo + 1

Close #1

End Sub

Private Sub Form Load()

nRecNo = 1

End Sub

Private Sub cbStart_Click()

Call SaveRecord

End Sub

Private Sub cbRead_Click()

Call ReadRecord

End Sub

В тексте этого кода мы объявили переменные ForFileRecords пользовательского типа для описания структуры файла и nRecNo в качестве счетчика записей. Открывая файл с доступом Random и указанием длины записи в соответствии с длиной переменной ForFileRecords, мы создаем файл требуемой структуры.

8. Запустите приложение. При нажатии кнопки Запись выполняется запись содержимого текстовых полей в файл созданной структуры. При нажатии кнопки Чтение эти данные можно прочитать в текстовом поле последовательно по записям, начиная с первой. При этом каждая кнопка вызывает собственную процедуру выполнения действия.

назад | содержание | вперед